<?php
require_once("../includes/config.php");
include DIR_INCLUDES_FT.'bootstrap.php';

try {
	ini_set('memory_limit', '512M');
	
	$conection->beginTransaction();
	
	if (isset($_POST['id']) && $_POST['id']) {
		$contagem = Doctrine::getTable("Contagens")->find($_POST['id']);
	} else {
		$contagem = new Contagens();
		$contagem->data_inicio = $_POST['data_inicio'];
		$contagem->ficheiro_backup = $_POST['ficheiro_backup'];
	}

        $contagem->loja_id = $_POST['loja'];
	$contagem->data_fim = date("Y-m-d H:i:sP");
	$contagem->save();

        if (isset ($_POST['codigos_barras_produtos'])){
            foreach ($_POST['codigos_barras_produtos'] as $i => $codigos_barras_id) {
                    if (isset($_POST['id'])){
                            $query = new Doctrine_Query();
                            $query->from("ContagensProdutos cp")
                                    ->where("cp.codigo_barras_produto_id = ? and cp.contagem_id =?",array($codigos_barras_id, $_POST['id']))
                                    ->orderBy("cp.quantidade DESC")->limit(1);
                            $contagem_produto = $query->fetchOne();
                            $query->free();
                    } else {
                            $contagem_produto = false;
                    }

                    //se já estiver o mesmo produto na base de dados e a sua quantidade seja inteira e a quantidade inserida seja inteira adiciona ao existente.
                    if ($contagem_produto && intval($contagem_produto->quantidade) > 0 && intval($_POST['quantidades'][$i]) > 0) {
                            $contagem_produto->quantidade += $_POST['quantidades'][$i];
                    } else {
                            $contagem_produto = new ContagensProdutos();
                            $contagem_produto->codigo_barras_produto_id = $codigos_barras_id;
                            $contagem_produto->quantidade = $_POST['quantidades'][$i];
                            $contagem_produto->contagem_id = $contagem->id;
                    }

                    $contagem_produto->save();

                    // verifica se está na loja
                    $esta_na_loja = Doctrine_Query::create()->from("CodigosBarrasProdutos cbp")
                                                            ->innerJoin("cbp.Produtos p")
                                                            ->leftJoin("p.ProdutosLojas pl")
                                                            ->where("cbp.codigo_barras_id = ? and pl.loja_id = ?",array($codigos_barras_id, $_POST['loja']))
                                                            ->fetchOne(array(), Doctrine::HYDRATE_ARRAY);

                    if (!$esta_na_loja) {
                        $produto = Doctrine_Query::create()->select("p.*")->from("Produtos p")
                                                            ->innerJoin("p.CodigosBarrasProdutos cbp")->where("cbp.codigo_barras_id = ?", array($codigos_barras_id))
                                ->fetchOne(array(), Doctrine::HYDRATE_ARRAY);
                            $produto_loja = new ProdutosLojas();
                            $produto_loja->loja_id = $_POST['loja'];
                            $produto_loja->produto_id = $produto['id'];
                            $produto_loja->save();
                    }
            }
        }
	
	$conection->commit();
	unlink(DIR_CONTAGENS_BACKUP_FT.$_POST['ficheiro_backup'].".csv");
	
	header("location: ".DIR_CONTAGENS_WS."redirect_contagem.php?id=".$contagem->id."&refere=".$_SERVER['HTTP_REFERER']);
} catch (Exception $e){
	$conection->rollback();
	header("location: ".DIR_WS."error_message.php?refere=".$_SERVER['HTTP_REFERER']);
}
?>